// src/api/caseStudies.js
import request from '@/api/request'; // 假设已封装axios实例（基础路径、请求拦截器等）

/**
 * 分页查询案例列表
 * 适配后端：NewsController.getByPage() → POST /news/list
 * @param {Object} params - 分页+搜索参数（对应后端PageQuery）
 * @param {number} params.pageNum - 页码（必填）
 * @param {number} params.pageSize - 每页条数（必填）
 * @param {string} [params.keyword] - 搜索关键词（匹配标题，可选）
 * @returns {Promise<Object>} 后端响应：Result<PageResult<Case>>
 */
export const getCaseStudyList = (params) => {
    return request({
        url: '/news/list',
        method: 'POST',
        data: params // 后端用@RequestBody接收PageQuery，故用data传参
    });
};

/**
 * 删除案例
 * 适配后端：NewsController.delete() → DELETE /news/{caseId}
 * @param {number|string} caseId - 案例ID（必填）
 * @returns {Promise<Object>} 后端响应：Result
 */
export const deleteCaseStudy = (caseId) => {
    return request({
        url: `/news/${caseId}`,
        method: 'DELETE'
    });
};

/**
 * 新增案例
 * 适配后端：NewsController.add() → POST /news
 * @param {Object} caseData - 案例数据（对应后端Case实体）
 * @param {string} caseData.title - 案例标题（必填）
 * @param {string} [caseData.thumbnailUrl] - 缩略图URL（可选）
 * @param {string} caseData.toolUsed - 工具使用（必填）
 * @param {number} caseData.authorId - 作者ID（必填）
 * @param {string} caseData.status - 状态（draft/published，必填）
 * @param {string} caseData.content - 案例内容（必填）
 * @returns {Promise<Object>} 后端响应：Result
 */
export const addCaseStudy = (caseData) => {
    return request({
        url: '/news',
        method: 'POST',
        data: caseData // 后端用@RequestBody接收Case，故用data传参
    });
};

/**
 * 更新案例
 * 适配后端：NewsController.update() → PUT /news
 * @param {Object} caseData - 案例数据（含caseId）
 * @param {number} caseData.caseId - 案例ID（必填，用于定位修改对象）
 * @param {string} caseData.title - 案例标题（必填）
 * @param {string} [caseData.thumbnailUrl] - 缩略图URL（可选）
 * @param {string} caseData.toolUsed - 工具使用（必填）
 * @param {number} caseData.authorId - 作者ID（必填）
 * @param {string} caseData.status - 状态（draft/published，必填）
 * @param {string} caseData.content - 案例内容（必填）
 * @returns {Promise<Object>} 后端响应：Result
 */
export const updateCaseStudy = (caseData) => {
    return request({
        url: '/news',
        method: 'PUT',
        data: caseData // 后端用@RequestBody接收Case，故用data传参
    });
};

/**
 * 根据ID查询单个案例（编辑时回显数据用）
 * 适配后端：NewsController.getById() → GET /news/{caseId}
 * @param {number|string} caseId - 案例ID（必填）
 * @returns {Promise<Object>} 后端响应：Result<Case>
 */
export const getCaseStudyById = (caseId) => {
    return request({
        url: `/news/${caseId}`,
        method: 'GET'
    });
};

/**
 * 查询所有案例（可选，按需使用）
 * 适配后端：NewsController.getAll() → GET /news
 * @returns {Promise<Object>} 后端响应：Result<List<Case>>
 */
export const getAllCaseStudies = () => {
    return request({
        url: '/news',
        method: 'GET'
    });
};